查看原文
其他

《深入浅出Embedding》随笔

半吊子全栈工匠 喔家ArchiSelf 2023-11-10

ChatGPT的核心运行机制或许是Transformer, ChatGPT的核心数据机制或许就是嵌入(Embedding)了。什么是Embedding呢?了解Embedding可以为我们的软件研发工作带来哪些帮助呢?鉴于此,老码农阅读了《深入浅出Embedding》(吴茂贵 王红星著,机械工业出版社,2021年)一书,本文是阅读该书的读书笔记和随感。

1. 关于Embedding

Embedding是一个向量,用以表达一个实体对象。该实体对象可以是一个单词,一个序列,一件商品,一个动作,一本书,一部电影等等。机器无法直接接收或处理标识符,标识符数据的数值化表示即为嵌入,即分布式表达。

Embedding 起源于Word2vec的Word Embedding,在NLP领域中取得了成功之后,开始把Item、Graph、Node、Position 甚至图像都转换为Embedding。就NLP而言,处理的一般步骤,首先做必要的清理工作,例如清楚特殊符号、格式转换、过滤停用词等等,然后进行分词、索引化,再利用相关模型和算法单词、短语等标识符向量化,形成静态或动态的词嵌入,最后输出给下游的任务,例如问答,机器翻译,自动摘要等等。其中,词嵌入或预训练模型是关键所在。

词嵌入预训练模型的学习载体,其中,ELMo和GPT采用自回归语言模型,BERT采用mask语言模型,XLNet采用排列语言模型。练一个神经网络,意味着要输入训练样本并不断调整神经元的权重,从而不断提高对目标预测的准确性。vocabulary的大小决定了神经网络权重矩阵的具体规模,负样本可以提高训练速度并改善词嵌入的质量。

如今,Embedding几乎无处不在,无论是传统机器学习、推荐系统,还是深度学习、自然语言处理,甚至图像处理都涉及了Embedding的技术问题。由于Embedding在本质上是一种数据表达,了解Embedding还需要了解诸如注意力机制、神经网络等基础知识。

2. 注意力机制

注意力机制源于对人类视觉的研究,指人类关注一些信息的同时忽略其他信息的选择能力,俗称“抓重点”。注意力机制主要有两种,软注意力是对所有key求权重概率,是一种全局计算机制,而硬注意力是直接精确定位到某个key,而忽略其他。在NLP中,注意力机制被看作单词对齐模型,在机器学习语境下非常直观,这就容易理解到那篇经典论文的示例。

Transformer可以看成一种特征提取器,能够平行处理序列问题,利用self-attention机制有效解决长期依赖问题。Transformer 彻底改变了深度学习领域。

Transformer 使用自注意力机制,可以让单词之间直接建立联系。Transformer模型涉及两种掩码方式:padding mask 和sequence mask。padding mask 用于长短不一的语句,sequence mask 只用在Decoder的自注意力中。掩码语言模型是一种真正的双向方法。

多头注意力可以从3个方面提升注意力层的性能:

  1. 扩展了模型专注于不同位置的能力

  2. 将缩放点积注意力过程重复多次,在把输出会并起来

  3. 提高了多个“表示子空间”

3. 神经网络基础

CNN是一种前馈神经网络,由一个或多个卷积层和顶端的全连接层组成,同时包括关联权重和池化层。增加通道就是增加卷积核,卷积核相当于过滤器,类似于标准神经网络中的权重矩阵,一般通过梯度下降算法反复迭代求得。加深网络层数是为了减少参数的数量,扩大感受域。而层数增加会导致梯度消失,除了采用合适的激活函数外,还要使用残差连接。 

RNN适合处理序列数据,及前后顺序有关的数据。RNN除了增加时间步长或序列长度外,也可以纵向扩展成多层循环神经网络,但只具备短期记忆。LSTM可以用于解决长期依赖问题,其变种GRU则提高了计算的效率。双向循环神经网络是集成算法思想的体现。

4. 词嵌入(Word Embedding)

Word Embedding 本质上是一种静态嵌入的方法,模型训练完成后每个单词的表达就固定了。Word2vec实现了从one-shot到词嵌入的转换,但没有解决一词多义的问题。ELMo则将Word Embedding带到了语境词嵌入的时代。

4.1 ELMo 词嵌入

ELMo是最早进行语境化词嵌入的方法之一,是典型的自回归预训练模型,包括了两个单向LSTM实现的单向语言模型。其核心思想体现在深度上下文上,首先把输入转化成字符级的Embedding,然后生成上下文无关的词嵌入,再双向语言模型生成上下文相关的词嵌入。但ELMo基于BI-LSTM,并发能力受到影响。

GPT和BERT是生成式的预训练模型,基于可平行处理的Transformer。

4.2 BERT 词嵌入

BERT使用上下文来预测单词,是在海量语料的基础上进行自监督学习,即没有人工标注的数据上进行监督学习。BERT的输入编码项链是标识嵌入(token Embedding)、位置嵌入(position Embedding)和段嵌入(segment Embedding)这三个嵌入特征的单位和。基于BERT的词嵌入可同时关注左右词的信息。

在下游的NLP任务中,可以使用BERT的特征表示作为该下游任务的词嵌入特征。也就是说,BERT提供的是供下游任务迁移学习的模型,该模型可以根据下游任务微调或固定之后作为特征提取器。除微调方法外,BERT也可使用特征提取方法,使用预先训练好的BERT模型来创建上下文的词嵌入,擅长处理自然语言理解任务。

4.3 GPT 词嵌入

GPT采用多层单向的transformer decoder,可以使用传统的语言模型进行训练,通过上文预测下一个单词,更擅长处理自然语言生成任务。GPT和GPT-2在架构上没有大的变化,只在规模、数据量上有所不同。GPT对下游采用有监督学习方式,通过修改输入格式,并添加一个全连接层。而GPT-2对下游采用无监督学习方式,不改变不同下游任务的参数和模型。

GPT-3 延续了GPT的单向语言模型训练方式,规模参数增大到1750亿,并使用45TB数据进行训练。同时,聚焦于更通用的NLP模型。

BERT由Transformer的Encoder模块构成,使用多头注意力,可以同时从某词的左右两边进行关注。而GPT-2采用遮掩多头注意力,只能关注词的右边,如下图所示——

5. 生成/获取 Embedding

词嵌入的学习方法主要有两种:1)将嵌入作为一层,随机初始化那些词向量,然后通过正负向学习得到最终的词向量;2)使用预训练的词嵌入。传统上,根据上下文生成目标词嵌入,可以使用CBOW模型,根据目标生成上下文采用skip-gram模型。CBOW 模型是根据某个词前后的若干词来预测该词,可以看成多分类,skip-gram则根据某个词的条件概率生成这个词的上下文。

使用PyTorch的Embedding Layer,把一个张量(tensor)转换为词嵌入,TensorFlow平台也有对应的网络层,具体步骤如下:

  1. 准备语料库

  2. 预处理,得到不同单词构成的词典,词典包含各单词及其索引

  3. 构建神经网络,把Embedding layer作为第一层,初始化对应的矩阵权重(查表获得)

  4. 通过训练来不断更新权重矩阵。

把预训练好的词嵌入作为模型的权重,进行微调,是一种迁移学习的方法。使用预训练模型,首先要考虑目标模型的数据量及目标数据与源数据的相关性,入门可以选择:github.com/huggingface/transformers. 微调允许修改预训练模型的参数来学习目标任务,常用方法是固定底层参数,调整顶层或具体层的参数。

6. Embedding 的应用

词嵌入诞生于NLP 领域, 因此在NLP领域中有着广泛的应用。除了NLP领域之外, Embedding 同样对各种领域产生非常大的影响。

6.1 用Embedding 表现分类特征

对结构化数据使用神经网络或深度学习框架进行分析时,首先需要对连续特征和类别特征进行处理。如果是连续特征一般进行分段处理,对分类特征则可以进行数字编码或者Embedding。如果类别颗粒度很粗,可以采用one-hot编码,如果颗粒度较细可以使用Embedding,最后拼接这些数据作为网络的输入层。

6.2 用Embedding提升ML性能

对于传统的机器学习算法,例如XGBoost,采用相同的数据集和算法,但输入预处理的方式如果是Embedding处理,机器学习模型的性能会有较大提升。

6.3 在推荐系统中的应用

在结构化数据上运行神经网络时, entity Embedding 表现很好。在推荐系统中,协同过滤基于矩阵分解模型,利用潜在特征的内积进行推荐,而内积属于线性变换,其特征的表现有限。如果利用神经网络取代内积部分,可以学到特征之间任意的函数关系。多层感知机利用FM、DNN等特征提取方法,这个架构可以无需人工特征工程,能同时学习低和高阶的组合特征,FM和DNN模块可以共享特征嵌入部分,进而提升训练效率及模型性能。用户对商品评价数据的稀疏性是影响推荐系统质量的主要因素之一,利用卷积神经网络的特征提取功能来学习高阶产品特征表示,然后作用到商品矩阵。 同样,使用Transformer的自注意力机制也可拥有强大的特征提取功能。

7. 小结

如果模型是大厦,那么Embedding就是砖瓦。Embedding技术由最初的自然语言处理领域在向机器学习、搜排序、推荐和知识图谱领域延伸,具体表现为Word Embedding向item embbeding,graph Embedding,categorical variable embbeding 的扩展。同时,Embedding自身也在从单一的静态表达向实体的动态表达演变,例如,Word Embedding 向ELMo,GPT,BERT等动态预训练模型演进,这是技术系统动态化趋势的一种体现。


【参考资料与关联阅读】


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存